﻿// code04080000.cpp : 位运算符
// 移位运算符、位求反、位与、位或、位异或运算符

#include <iostream>

int main()
{
	//char类型占8位，二进制表示为 10011011
	unsigned char bits = 0233;


	//移位后bits提升为int类型，占32位，然后向左移动8位
	//二进制表示为 0[16] 10011011 0[8]
	bits << 8;
	//二进制表示为 10000000 0[24] 头部超出截断，不可逆
	bits << 31;
	//二进制表示为 0[24] 00010011 尾部超出截断，不可逆
	bits >> 3;


	//位求反
	//二进制表示为 10010111
	bits = 0227;

	//求反时先提升为int类型再求反，二进制表示为 1[24] 01101000
	~bits;

	unsigned char b1 = 0145;	//		二进制表示为  01100101
	unsigned char b2 = 0257;	//		二进制表示为  10101111
	b1 & b2;					//	位与 二进制表示为 00100101
	b1 | b2;					//	位或 二进制表示为 11101111
	b1 ^ b2;					//位异或 二进制表示为 11011010

	return 0;

}


